#ifndef _LIDAR_PERPROCESS_GROUND_SEG_RING_H_
#define _LIDAR_PERPROCESS_GROUND_SEG_RING_H_
#include <pcl/common/io.h>
#include <math.h>
#include <vector>
#include <iomanip>
#include "common/log.h"
#include "../lidar_preprocess.h"
namespace perception
{
    namespace lidar_preprocess
    {
        struct BKTH_32
        {
            int Horizon_SCAN = 2000; // 每条线束点云
            int N_SCAN = 32;         // 线数
        };
        struct BKTH_16
        {
            int Horizon_SCAN = 2000; // 每条线束点云
            int N_SCAN = 16;         // 线数
        };
        template <typename T1, typename T2, typename T3>
        class GroundSegRing : public LidarPreprocess<T1, T2, T3>
        {
        public:
            void Process(typename pcl::PointCloud<T1>::Ptr &data_in, typename pcl::PointCloud<T2>::Ptr &data_out, T3 &config);
            GroundSegRing() {}
            ~GroundSegRing() {}

        private:
            float angle_th; // angle阈值，小于angle_th则为地面点，否则为非地面点
        };
    }
}
#endif